/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package org.cip.esymons.colegiatura.beans;

import java.util.ArrayList;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import org.cip.esymons.colegiatura.bc.ColegiadoDelegate;
import org.cip.esymons.colegiatura.bc.PagoColegiaturaDelagate;
import org.cip.esymons.colegiatura.bc.solicitanteDelegate;
import org.cip.esymons.colegiatura.be.Colegiado;
import org.cip.esymons.general.be.PersonaNatural;

/**
 *
 * @author ADMINISTRADOR
 */
public class defuncionController {

    private ColegiadoDelegate delegadoColegiado;
    private PagoColegiaturaDelagate delegadoPago;
    private solicitanteDelegate delegadoSolicitante;
    private Colegiado colegiado;
    private PersonaNatural persona;
    private String codigoCip;
    private String dni,nombres,apePaterno,apeMaterno,ruc;
    private Boolean soloColegiados;
    List<PersonaNatural> listaPersonas;
    private Integer activo;
    private Boolean noHallado;

    public defuncionController() {

       delegadoColegiado = new ColegiadoDelegate();
       delegadoPago = new PagoColegiaturaDelagate();
       delegadoSolicitante = new solicitanteDelegate();
       colegiado = new Colegiado();
       persona = new PersonaNatural();
       listaPersonas  = new ArrayList<PersonaNatural>();
       noHallado = false;
    }

    public Boolean getNoHallado() {
        return noHallado;
    }

    public void setNoHallado(Boolean noHallado) {
        this.noHallado = noHallado;
    }

    public Integer getActivo() {
        return activo;
    }

    public void setActivo(Integer activo) {
        this.activo = activo;
    }

    public PersonaNatural getPersona() {
        return persona;
    }

    public void setPersona(PersonaNatural persona) {
        this.persona = persona;
    }

    public solicitanteDelegate getDelegadoSolicitante() {
        return delegadoSolicitante;
    }

    public void setDelegadoSolicitante(solicitanteDelegate delegadoSolicitante) {
        this.delegadoSolicitante = delegadoSolicitante;
    }

    public List<PersonaNatural> getListaPersonas() {
        return listaPersonas;
    }

    public void setListaPersonas(List<PersonaNatural> listaPersonas) {
        this.listaPersonas = listaPersonas;
    }

    public String getRuc() {
        return ruc;
    }

    public void setRuc(String ruc) {
        this.ruc = ruc;
    }

    public Boolean getSoloColegiados() {
        return soloColegiados;
    }

    public void setSoloColegiados(Boolean soloColegiados) {
        this.soloColegiados = soloColegiados;
    }

    public String getApeMaterno() {
        return apeMaterno;
    }

    public void setApeMaterno(String apeMaterno) {
        this.apeMaterno = apeMaterno;
    }

    public String getApePaterno() {
        return apePaterno;
    }

    public void setApePaterno(String apePaterno) {
        this.apePaterno = apePaterno;
    }

    public String getDni() {
        return dni;
    }

    public void setDni(String dni) {
        this.dni = dni;
    }

    public String getNombres() {
        return nombres;
    }

    public void setNombres(String nombres) {
        this.nombres = nombres;
    }

    public PagoColegiaturaDelagate getDelegadoPago() {
        return delegadoPago;
    }

    public void setDelegadoPago(PagoColegiaturaDelagate delegadoPago) {
        this.delegadoPago = delegadoPago;
    }

    public Colegiado getColegiado() {
        return colegiado;
    }

    public void setColegiado(Colegiado colegiado) {
        this.colegiado = colegiado;
    }

    public ColegiadoDelegate getDelegadoColegiado() {
        return delegadoColegiado;
    }

    public void setDelegadoColegiado(ColegiadoDelegate delegadoColegiado) {
        this.delegadoColegiado = delegadoColegiado;
    }

    public String getCodigoCip() {
        return codigoCip;
    }

    public void setCodigoCip(String codigoCip) {
        this.codigoCip = codigoCip;
    }

    public String buscaPorCip(){

        try{
        Integer cifras = codigoCip.length();
             if(cifras<3){
                 codigoCip = "0000"+ codigoCip;
             }else{
                   if(cifras<4){
                       codigoCip = "000"+codigoCip;
                   }else{
                       if(cifras<5){
                           codigoCip = "00"+codigoCip;
                       }else{
                           if(cifras<6){
                              codigoCip = "0"+codigoCip;
                           }
                       }
                   }
             }
        colegiado = delegadoColegiado.buscaPorCip(codigoCip);
        if(colegiado.getColnumeroCip()!=null){
            codigoCip="";
            activo = 2;
            return null;
        }else{
            noHallado = true;
            mostrarMensaje("INFO: ", "No se encontro el colegiado...", FacesMessage.SEVERITY_INFO);
            return null;
        }
        }catch(Exception ex){
            
            return null;
        }
    }

    public String nuevo(){

        colegiado = new Colegiado();
        return "ir_a_defuncion";

    }

    public String defuncion(){

        colegiado.setColCondicion(false);
        colegiado.setColestaVivo(false);
        delegadoColegiado.edit(colegiado);

        delegadoPago.anularCuotas(colegiado.getColnumeroCip(),colegiado.getColfechaFallecio());
        //INICIALIZAMOS EL COLEGIADO
        colegiado = new Colegiado();
        mostrarMensaje("INFO: ", "El colegiado esta cesado en el sistema...", FacesMessage.SEVERITY_INFO);
        return null;
    }

    public String buscarColegiado(){

        try{
            ruc = "";
            soloColegiados = true;
            listaPersonas  = new ArrayList<PersonaNatural>();
            listaPersonas = delegadoSolicitante.buscarPerNatural(dni, apePaterno, apeMaterno, nombres, ruc, soloColegiados);
            if(listaPersonas.size()>0){
                dni = "";
                apePaterno = "";
                apeMaterno ="";
                nombres = "";
                activo = 1;
                return null;
            }else{
                noHallado = true;
                mostrarMensaje("INFO: ", "No se encontro el colegiado...", FacesMessage.SEVERITY_INFO);
                return null;
            }
        }catch(Exception ex){
            
            return null;
        }
    }

    public String cerrarVentana(){

        colegiado = new Colegiado();
        persona = new PersonaNatural();
        listaPersonas  = new ArrayList<PersonaNatural>();
        activo = null;
        noHallado = false;
        codigoCip="";
        dni = "";
        apePaterno = "";
        apeMaterno ="";
        nombres = "";
        return null;

    }

    public String seleccionarColegiado(){

        try{
            colegiado = new Colegiado();
            colegiado = delegadoColegiado.buscaPorDni(persona.getPerNroDNI());
            persona = new PersonaNatural();
            listaPersonas  = new ArrayList<PersonaNatural>();
            activo = 2;
        }catch(Exception ex){
            System.out.println(ex);
        }
        return null;
    }

    public String seleccionarTemporal(){

        try{
            colegiado = new Colegiado();
            colegiado = delegadoColegiado.buscaColegiadoPorPasaporte(persona.getPerNroPasaporte());
            persona = new PersonaNatural();
            listaPersonas  = new ArrayList<PersonaNatural>();
            activo = 2;
        }catch(Exception ex){
            System.out.println(ex);
        }
        return null;
    }

    public String cancelar(){

        colegiado = new Colegiado();
        persona = new PersonaNatural();
        listaPersonas  = new ArrayList<PersonaNatural>();
        activo = null;
        return null;
    }

    public void mostrarMensaje(String resumen, String detalle, FacesMessage.Severity severidad) {
        try {
            FacesMessage fm = new FacesMessage(severidad, resumen, detalle);
            FacesContext.getCurrentInstance().addMessage(fm.toString(), fm);
        } catch (Exception e) {
            FacesMessage fm = new FacesMessage(FacesMessage.SEVERITY_ERROR, e.getMessage(), e.getMessage());
            FacesContext.getCurrentInstance().addMessage(fm.toString(), fm);
        }
    }


}
